package com.dzt.tool.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateFormat {

	private DateFormat() {

	}

	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	public static String dateToString(Date date, String format) {
		sdf.applyPattern(format);
		return sdf.format(date);
	}
	
	public static String dateToDateString(Date date) {
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
		return sdf1.format(date);
	}

	public static String dateToString(Date date) {
		sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
		return sdf.format(date);
	}

	public static Date stringToDate(String dateStr, String format) throws ParseException {
		sdf.applyPattern(format);
		return sdf.parse(dateStr);
	}

	public static Date stringToDate(String dateStr) throws ParseException {
		sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
		return sdf.parse(dateStr);
	}

	/** 根据参数获取距当前时间x月y天的时间 */
	public static Date getDay(int x, int y) {
		// 获取当前日期
		Calendar cal = Calendar.getInstance();
		// 设置月（x=0表示当月，x=1表示下个月，x=-1表示上个月）
		cal.add(Calendar.MONTH, x);
		// 设置天（y=1表示当月1号，y=0表示上个月最后一天。。。）
		cal.set(Calendar.DAY_OF_MONTH, y);
		// 设置时
		cal.set(Calendar.HOUR_OF_DAY, 0);
		// 设置分
		cal.set(Calendar.MINUTE, 0);
		// 设置秒
		cal.set(Calendar.SECOND, 0);
		// 设置毫秒
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTime();
	}

	public static void main(String[] args) {
		System.out.println(dateToString(getDay(0, 33)));
	}

	/** 比较日期,如果开始日期大于结束日期返回真,否则返回假 */
	public static boolean compareDate(String startDate, String endDate) throws ParseException {
		Date start = stringToDate(startDate, "yyyy-MM-dd");
		Date end = stringToDate(endDate, "yyyy-MM-dd");
		if (start.getTime() > end.getTime()) {
			return true;
		}
		return false;
	}

	/** 将 时间转换成corn表达式 ,例如. "0 06 10 15 1 ? 2014" */
	public static String getCron(Date date) {
		return dateToString(date, "ss mm HH dd MM") + " ?";
	}

}